#include"comm.hpp"


using namespace std;


// 管理管道文件
int main()
{
    // 创建信道 —— 命名管道
    Init init;
    log logg;
    // logg.Enable(Onefile);
    logg.Enable(Classfile);

    // sleep(5);
    // 打开信道
    int fd = open(FIFO_FILE, O_RDONLY); // 等待 写入方打开 管道文件之后，自己才会向后执行，open 阻塞了！
    if(fd < 0)
    {
        // perror("open");
        // logmessage(Fatal, "error string: %s, error code: %d\n", strerror(errno), errno);

        // logg.logmessage(Fatal, "error string: %s, error code: %d\n", strerror(errno), errno);
        logg(Fatal, "error string: %s, error code: %d\n", strerror(errno), errno);
        exit(FIFO_OPEN_ERR);
    }

    // cout << "" << endl;
    // logmessage(Info, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    // logg.logmessage(Info, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    logg(Info, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    logg(Debug, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    logg(Debug, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    logg(Warning, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    logg(Error, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);
    logg(Fatal, "server open file done, error string: %s, error code: %d\n", strerror(errno), errno);



    // 开始通信
    while(true)
    {
        char buffer[1024] = {0};
        int x = read(fd, buffer, sizeof(buffer));
        if(x > 0)
        {
            buffer[x] = 0;
            cout << "client say# " << buffer << endl;
        }
        else if(x == 0)
        {
            // cout << "client quit, me too!" << endl;
            // logg.logmessage(Debug, "client quit, me too! error string: %s, error code: %d\n", strerror(errno), errno);
            logg(Debug, "client quit, me too! error string: %s, error code: %d\n", strerror(errno), errno);
            break;
        }
        else
        {
            break;
        }
    }


    // 删除 管道
    close(fd);

    

    return 0;
}